package com.bluebridgecup.BasicAlgorithms.BinarySearch;

import java.util.Scanner;

public class RootCalculator {
    // 定义全局变量n和m，分别用于存储输入的数N和方根此M
    static double n, m;
    // 精度控制变量del，用于控制二分查找的精度，这里设置为1e-9(意思为10的-9次方)
    static double del = 1e-9;

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 读取输入的数N
        n = in.nextDouble();
        // 读取输入的方根次数M
        m = in.nextDouble();
        // 初始化二分查找的左边界l为1，右边界r为n
        double l = 1, r = n;
        // 当左边界l加上精度空值变量del仍小于右边界r时，则继续循环
        while (l + del < r) {
            // 计算中间值Mid(浮点数不可以使用右移运算符！)
            double mid = (l + r) / 2;
            // 调用check方法判断Mid的m次方是否大于n
            if (check(mid)) {
                // 如果大于n，则将右边界r更新为mid
                r = mid;
            } else {
                // 否则将左边界l更新为Mid
                l = mid;
            }
        }
        // 输出结果，保留七位小数
        System.out.printf("%.7f", l);
        in.close();
    }

    // 定义check方法，用于判断x的m次方是否大于n
    static boolean check(double x) {
        double res = 1;
        // 通过循环计算x的m次方
        for (int i = 0; i < m; i++) {
            res *= x;

        }
        // 返回x的m次方是否大于n的判断结果
        return res > n;
    }

}
